package com.spica.platform.base.model;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;
import java.util.List;

/**
 * 系统用户实体
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("sys_user")
public class SysUser extends BaseEntity<SysUser> {
	private static final long serialVersionUID = -5886012896705137070L;
	/**
	 * 唯一用户名
	 */
	private String username;
	/**
	 * 手机号(带国际码)
	 */
	private String mobile;
	/**
	 * 邮箱
	 */
	private String email;
	/**
	 * 加密后的密码
	 */
	private String password;
	/**
	 * 显示名称
	 */
	private String nickname;
	/**
	 * 头像URL
	 */
	private String avatarUrl;
	/**
	 * 个人简介
	 */
	private String bio;
	/**
	 * 0-未知 1-男 2-女
	 */
	private Integer gender;
	/**
	 * 生日
	 */
	private Date birthdate;
	/**
	 * ISO国家代码
	 */
	private String countryCode;
	/**
	 * 界面语言
	 */
	private String language;
	/**
	 * 1-正常 2-锁定 3-注销
	 */
	private Integer accountStatus;
	/**
	 * 是否认证用户
	 */
	private Integer isVerified;
	/**
	 * 隐私设置JSON
	 */
	private String privacySettings;
	/**
	 * 用户偏好设置JSON
	 */
	private String preferences;
	/**
	 * 第三方认证信息
	 */
	private String thirdPartyAuth;
	/**
	 * 创建时间
	 */
	private Date createTime;
	/**
	 * 最近更新时间
	 */
	private Date updateTime;
	/**
	 * 最近登录时间
	 */
	private Date lastLoginTime;
	/**
	 * 账户类型
	 */
	private Integer type;
	/**
	 * 逻辑删除,使用mybatis自带的baseMapper删除时起效
	 */
	@TableLogic
	private boolean isDel;

	/**
	 * 数字身份识别
	 */
	private String openId;
	@TableField(exist = false)
	private List<SysRole> roles;

	@TableField(exist = false)
	private String roleId;
	@TableField(exist = false)
	private String oldPassword;
	@TableField(exist = false)
	private String newPassword;
	/** 职业 */
	@TableField(exist = false)
	private String occupation;
	@TableField(exist = false)
	private String province;
	@TableField(exist = false)
	private String city;
	@TableField(exist = false)
	private String area;
	@TableField(exist = false)
	private String ip;
	@TableField(exist = false)
	private String company;
}
